package eSchool.BL;

import eSchool.DataLayer.DAOFactory;


// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
import eSchool.DataLayer.IDocenteDAO;
// #[regen=yes,id=DCE.DB543E55-3C68-EA34-99DB-60DB21ED8046]
import eSchool.Utils.TextHelper;
// </editor-fold> 
public class Docente extends EntidadeBase {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.996B95AA-45D5-E461-7AAC-88A19BA4C6C8]
    // </editor-fold> 
    private int idDocente;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.304556BD-B04B-6899-073C-2061DD490E9E]
    // </editor-fold> 
    public Docente() {
        idDocente = 0;
        morada = TextHelper.EmptyString;
        codPostal = TextHelper.EmptyString;
        localidade = TextHelper.EmptyString;
        sexo = TextHelper.EmptyString;
        email = TextHelper.EmptyString;
        telefone = TextHelper.EmptyString;
        obs = TextHelper.EmptyString;
        nome = TextHelper.EmptyString;
    }
    
    public Docente(int idDocente) throws Exception {
        this.leDados(idDocente);
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.273E8BDF-A006-86F3-E4B1-1C135780C1DF]
    // </editor-fold> 
    public int getIdDocente() {
        return idDocente;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,regenBody=yes,id=DCE.E572E6FA-4DB5-60C0-4990-C313467BAA4B]
    // </editor-fold> 
    public void setIdDocente(int val) {
        this.idDocente = val;
    }

    @Override
    public void gravaDados() throws Exception {
                     
        DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
        IDocenteDAO docenteDAO = factory.getDocenteDAO();
        if(docenteDAO.findDocente(this.idDocente)== null)
            docenteDAO.insertDocente(this);
        else
            docenteDAO.updateDocente(this);
    }

    @Override
    public void leDados() throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void leDados(int idDocente) throws Exception { 
         DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
         IDocenteDAO docenteDAO = factory.getDocenteDAO();
         docenteDAO.findDocente(this, idDocente);
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return ((Integer)idDocente);
            case 1:
                return morada;
            case 2:
                return codPostal;
            case 3:
                return localidade;
            case 4:
                return sexo;
            case 5:
                return email;
            case 6:
                return telefone;
            case 7:
                return obs;
            case 8:
                return nome;
            default:
                return null;
       }
    }
    
    public int getColumnCount() {
        return 9;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return "idDocente";
            case 1:
                return "morada";
            case 2:
                return "codPostal";
            case 3:
                return "localidade";
            case 4:
                return "sexo";
            case 5:
                return "email";
            case 6:
                return "telefone";
            case 7:
                return "obs";
            case 8:
                return "nome";
            default:
                return null;
       }
    }

    public Class<?> getColumnClass(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return ((Integer)idDocente).getClass();
            case 1:
                return morada.getClass();
            case 2:
                return codPostal.getClass();
            case 3:
                return localidade.getClass();
            case 4:
                return sexo.getClass();
            case 5:
                return email.getClass();
            case 6:
                return telefone.getClass();
            case 7:
                return obs.getClass();
            case 8:
                return nome.getClass();
            default:
                return null;
       }

    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

   
    public void setValueAt(Object aValue, int rowIndex, int columnIndex){
        
       switch (columnIndex) {
            case 0:
                idDocente = Integer.parseInt(String.valueOf(aValue));
                break;
            case 1:
                morada = String.valueOf(aValue);
                break;
            case 2:
                codPostal = String.valueOf(aValue);
                break;
            case 3:
                localidade = String.valueOf(aValue);
                break;
            case 4:
                sexo = String.valueOf(aValue);
                break;
            case 5:
                email = String.valueOf(aValue);
                break;
            case 6:
                telefone = String.valueOf(aValue);
                break;
            case 7:
                obs = String.valueOf(aValue);
                break;
            case 8:
                nome = String.valueOf(aValue);
                break;
        }
    }
    
}

